package com.crm.system.service.memberManager;

import com.alibaba.fastjson.JSONObject;
import com.crm.common.model.DhPageInfo;
import com.crm.model.entity.memberManager.CustomerMemberCardOld;
import com.crm.model.qo.memberManager.MemberShipCardQO;
import com.crm.model.vo.memberManager.MemberCardOldVO;
import com.crm.model.vo.memberManager.MemberShipCardListVO;
import com.crm.model.vo.systemManager.*;

import java.io.IOException;
import java.util.List;

/**
 * @author luojie
 * @date 2021/4/8 13:52
 */
public interface MemberShipCardService {

    /***
     * @Description:查询会员卡列表
     * @Param: memberShipCardQO 查询条件
     * @Param: pageIndex/pageSize  页号/每页显示个数
     * @Param: sortName/sortOrder  ---排序字段及规则
     * @Author: luojie
     * @Date: 2021/4/8 13:57
     */
    DhPageInfo<MemberShipCardListVO> selectMemberShipCardList(MemberShipCardQO memberShipCardQO, Integer pageIndex, Integer pageSize, String sortName, String sortOrder);

    /**
     * 导入会员卡信息
     * @param: [list, companyId] 导入的集合,公司id
     * @return: com.alibaba.fastjson.JSONObject
     * @Author: baijian
     * @Date: 2021/6/24
     */
    JSONObject importMembershipCard(List<MemberShipCardImportVO> list, String companyId);

    /***
     * @Description: 查询旧系统会员卡列表
     * @Param:
     * @Author: luojie
     * @Date: 2021/4/8 13:41
     */
    DhPageInfo<MemberCardOldVO> selectMemberCardOldList(Integer pageIndex, Integer pageSize, String sortName, String sortOrder, MemberShipCardQO memberShipCardQO);

    /***
     * @Description: 查询旧系统公司名称
     * @Param:
     * @Author: luojie
     * @Date: 2021/4/8 13:41
     */
    List<MemberCardOldVO> getCompanyList();

    /**
     * 导入客户充值信息
     * @param list
     * @return
     */
    JSONObject importCustomerPay(List<CustomerPayImportVO> list);

    /**
     * 导入单独会员卡信息
     * @return
     * @throws IOException
     */
    JSONObject importAloneMembershipCard(List<AloneMemberShipCardImportVO> list);

    /**
     * 税法直通车
     * @param list
     * @param companyId
     * @return
     */
    JSONObject importTaxCard(List<TaxCardImportVO> list, String companyId);

    /**
     * 删除充值码
     * @return
     * @throws IOException
     */
    void updateRechargeCodeDelete(List<RechargeCodeImportVO> list);

    /***
     * 补全会员卡开始日期和结束时间
     */
    void updateCardDate();

    /**
     * 删除兑换码
     * @return
     * @throws IOException
     */
    void updateExchangeCodeDelete(List<RechargeCodeImportVO> list);

    /**
     *补全会员卡客户id
     * @param list
     * @return
     */
    JSONObject importCard(List<CardVO> list);
}
